package com.ym.manager.admin.properties;

import com.ym.manager.sys.config.SysConfigsDao;
import com.ym.manager.sys.config.model.SysConfigInfo;
import com.ym.manager.sys.config.model.SysErrorCode;
import com.ym.mq.MqUtil;
import com.ym.utils.Common;
import com.ym.utils.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;
import java.util.List;

/**
 * Description
 * Created by 王伟
 * Date create on 15:37 2019/11/13.
 */
@Configuration
public class SysConfig {
    @Autowired
    private SysConfigsDao sysConfigDao;
    private static SysConfigsDao configDao;

    @PostConstruct
    private void init(){
        configDao = sysConfigDao;
        loadSysConfig();
//        loadMq();
//        MqUtil.getProducer();//加载mq连接
        /* boot 配置文件打包，所有公共配置走数据库 */
        new Thread(()->{
            while (true) {
                try {
                    Thread.sleep(60000);
                    loadSysConfig();
                } catch (Exception e) {
                    Logger.error("系统配置加载出错:");
                }
            }
        }).start();

        /* 连接配置 */
//        new Thread(()->{
//            while (true) {
//                try {
//                    Thread.sleep(600000);
//                    loadMq();
//                } catch (Exception e) {
//                    Logger.error("Mq配置加载出错:");
//                }
//            }
//        }).start();
    }

    private static void loadSysConfig(){
        //加载配置中心错误码
//        List<SysErrorCode> SysErrorCodes = configDao.sysErrorCode();
//        for(SysErrorCode SysErrorCode : SysErrorCodes){
//            Config.pp.put(SysErrorCode.errorCode, SysErrorCode.errorMsg);
//        }

        //加载系统配置
        List<SysConfigInfo> sysConfigs = configDao.sysConfig();
        for(SysConfigInfo sysConfig : sysConfigs){
            Config.pp.put(sysConfig.configKey, sysConfig.configValue);
        }
        //加载oss配置
//        List<SysConfigInfo> ossConfigs = configDao.ossConfig();
//        for(SysConfigInfo ossConfig : ossConfigs){
//            Config.pp.put(ossConfig.configKey, ossConfig.configValue);
//        }
//
//        //加载资金配置
//        List<SysConfigInfo> walletConfigs = configDao.walletConfig();
//        for(SysConfigInfo ossConfig : walletConfigs){
//            Config.pp.put(ossConfig.configKey, ossConfig.configValue);
//        }
    }

    private static void loadMq(){
        //加载mq配置
        Config.mq = configDao.sysMq();
    }
}
